MFC (Microsoft Foundation Classes) এর মাধ্যমে window creation (উইন্ডো তৈরি), positioning (পজিশনিং), এবং resizing (আকার পরিবর্তন) অত্যন্ত গুরুত্বপূর্ণ ফিচার। উইন্ডো তৈরি করার সময় এর বিভিন্ন বৈশিষ্ট্য নির্ধারণ করা যায়, যেমন এর আকার, অবস্থান, এবং ব্যবহারকারীর ইন্টারঅ্যাকশন অনুযায়ী এর আকার পরিবর্তন। এই বিষয়গুলোর মাধ্যমে একটি ব্যবহারকারী বান্ধব, ইন্টারঅ্যাকটিভ এবং স্কেলেবল অ্যাপ্লিকেশন তৈরি করা যায়।
উইন্ডো তৈরি (Window Creation)
MFC অ্যাপ্লিকেশন তৈরির সময়, CWnd বা এর ভিত্তিতে তৈরি ক্লাস ব্যবহার করে উইন্ডো তৈরি করা হয়। উইন্ডো তৈরি করতে প্রধানত Create বা CreateEx মেথড ব্যবহার করা হয়, যেখানে উইন্ডোর বিভিন্ন বৈশিষ্ট্য (যেমন সাইজ, অবস্থান, স্টাইল ইত্যাদি) নির্ধারণ করা যায়।
Code Example:
BOOL CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (!CFrameWnd::OnCreate(lpCreateStruct))
return -1;
// উইন্ডো তৈরি এবং বৈশিষ্ট্য নির্ধারণ
if (!m_wndToolBar.Create(this) || !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
{
TRACE0("Failed to create toolbar\n");
return -1;
}
return 0;
}
এখানে CFrameWnd::OnCreate ফাংশনটি উইন্ডো তৈরি করার জন্য ব্যবহৃত হয় এবং এর ভিতরে বিভিন্ন কন্ট্রোল যেমন ToolBar বা অন্যান্য উইজেট যুক্ত করা যায়।
উইন্ডো পজিশনিং (Window Positioning)
MFC তে উইন্ডোর অবস্থান নির্ধারণ করার জন্য SetWindowPos() ফাংশন ব্যবহৃত হয়, যা একটি উইন্ডোকে নির্দিষ্ট স্থান বা কোটায় সরিয়ে নিয়ে যায়। SetWindowPos() বিভিন্ন প্যারামিটার গ্রহণ করে, যেমন উইন্ডোর অবস্থান, আকার, উইন্ডোর অর্ডার (ফরওয়ার্ড বা ব্যাকওয়ার্ড), এবং অন্যান্য গুণাবলি।
Code Example:
BOOL CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (!CFrameWnd::OnCreate(lpCreateStruct))
return -1;
// উইন্ডো পজিশনিং
SetWindowPos(&wndTop, 100, 100, 800, 600, SWP_NOZORDER);
return 0;
}
এখানে, SetWindowPos উইন্ডোকে (100, 100) কোটায় এবং সাইজ 800x600 এ সেট করবে। SWP_NOZORDER প্যারামিটার উইন্ডোর অর্ডার পরিবর্তন না করার জন্য ব্যবহৃত হয়।
SetWindowPos এর অন্যান্য প্যারামিটারগুলো হলো:
- hwndInsertAfter: উইন্ডোটি কোথায় স্থান পাবে (উদাহরণস্বরূপ,
&wndTop,&wndBottom,&wndTopMostইত্যাদি)। - x, y: নতুন অবস্থান (পজিশন) নির্ধারণ।
- cx, cy: উইন্ডোর নতুন সাইজ।
- uFlags: পরিবর্তনটি কীভাবে কার্যকর হবে (যেমন
SWP_NOZORDER,SWP_NOMOVEইত্যাদি)।
উইন্ডো রিসাইজিং (Window Resizing)
MFC তে উইন্ডোর আকার পরিবর্তন করার জন্য OnSize() মেসেজ হ্যান্ডলার ব্যবহার করা হয়। এই ফাংশনটি তখন কল হয় যখন ব্যবহারকারী উইন্ডোর আকার পরিবর্তন করেন, অথবা প্রোগ্রাম্যাটিকভাবে আকার পরিবর্তন করা হয়।
Code Example:
void CMainFrame::OnSize(UINT nType, int cx, int cy)
{
CFrameWnd::OnSize(nType, cx, cy);
// উইন্ডোর সাইজ পরিবর্তন হলে টুলবার বা অন্যান্য কন্ট্রোলের সাইজ অটো-রিসাইজ
if (m_wndToolBar.GetSafeHwnd())
{
m_wndToolBar.MoveWindow(0, 0, cx, 30); // টুলবারের আকার পরিবর্তন
}
}
এখানে, OnSize() ফাংশনটি উইন্ডোর সাইজ পরিবর্তন হলে কল হয়। এই ফাংশনের মাধ্যমে উইন্ডো বা অন্যান্য কন্ট্রোল (যেমন টুলবার) আকার পরিবর্তন করা যায়। nType প্যারামিটার উইন্ডোর সাইজ পরিবর্তনের ধরন নির্দেশ করে, যেমন:
SIZE_MINIMIZED: উইন্ডো মিনিমাইজ করা হয়েছে।SIZE_MAXIMIZED: উইন্ডো ম্যাক্সিমাইজ করা হয়েছে।SIZE_RESTORED: উইন্ডো রিসাইজ করা হয়েছে।
ডায়ালগ সাইজ পরিবর্তন (Dialog Resizing)
MFC অ্যাপ্লিকেশনে ডায়ালগ উইন্ডোর আকার পরিবর্তন করতে হলে, OnSize() ফাংশনের মাধ্যমে SetWindowPos() বা MoveWindow() ব্যবহার করা যায়, তবে ডায়ালগে কন্ট্রোলগুলোর সাইজ অটোমেটিকভাবে অ্যাডজাস্ট করা হয় না। ডায়ালগ উইন্ডোর কন্ট্রোলের সাইজ পরিবর্তন করার জন্য Resize মেকানিজম ব্যবহার করতে হয়।
Code Example:
void CMainFrame::OnSize(UINT nType, int cx, int cy)
{
CFrameWnd::OnSize(nType, cx, cy);
// কন্ট্রোলসের সাইজ পরিবর্তন
if (m_wndToolBar.GetSafeHwnd())
{
m_wndToolBar.MoveWindow(0, 0, cx, 30);
}
}
এটি নিশ্চিত করবে যে কন্ট্রোলস যেমন টুলবার বা অন্যান্য উইন্ডো সাইজ পরিবর্তন হলে সেগুলি সঠিকভাবে রিসাইজ হবে।
সারাংশ
Window Creation, Positioning, এবং Resizing MFC অ্যাপ্লিকেশনের গুরুত্বপূর্ণ উপাদান, যার মাধ্যমে অ্যাপ্লিকেশনের উইন্ডো তৈরি, পজিশন এবং আকার নিয়ন্ত্রণ করা যায়। Create বা CreateEx ফাংশনের মাধ্যমে উইন্ডো তৈরি করা হয় এবং SetWindowPos বা OnSize এর মাধ্যমে উইন্ডোর অবস্থান এবং আকার পরিবর্তন করা হয়। এই ফিচারগুলির মাধ্যমে ইউজার ইন্টারফেসে আরও নমনীয়তা এবং ব্যবহারকারী বান্ধব বৈশিষ্ট্য সংযুক্ত করা সম্ভব হয়।
Read more